using Microsoft.Expression.Media;
using System;
using System.Windows;
using System.Windows.Media;
namespace Microsoft.Expression.Shapes
{
	public sealed class BlockArrow : PrimitiveShape, IGeometrySourceParameters, IBlockArrowGeometrySourceParameters
	{
		public static readonly DependencyProperty OrientationProperty = DependencyProperty.Register("Orientation", typeof(ArrowOrientation), typeof(BlockArrow), new DrawingPropertyMetadata(ArrowOrientation.Right, DrawingPropertyMetadataOptions.AffectsRender));
		public static readonly DependencyProperty ArrowheadAngleProperty = DependencyProperty.Register("ArrowheadAngle", typeof(double), typeof(BlockArrow), new DrawingPropertyMetadata(90.0, DrawingPropertyMetadataOptions.AffectsRender));
		public static readonly DependencyProperty ArrowBodySizeProperty = DependencyProperty.Register("ArrowBodySize", typeof(double), typeof(BlockArrow), new DrawingPropertyMetadata(0.5, DrawingPropertyMetadataOptions.AffectsRender));
		public ArrowOrientation Orientation
		{
			get
			{
				return (ArrowOrientation)base.GetValue(BlockArrow.OrientationProperty);
			}
			set
			{
				base.SetValue(BlockArrow.OrientationProperty, value);
			}
		}
		public double ArrowheadAngle
		{
			get
			{
				return (double)base.GetValue(BlockArrow.ArrowheadAngleProperty);
			}
			set
			{
				base.SetValue(BlockArrow.ArrowheadAngleProperty, value);
			}
		}
		public double ArrowBodySize
		{
			get
			{
				return (double)base.GetValue(BlockArrow.ArrowBodySizeProperty);
			}
			set
			{
				base.SetValue(BlockArrow.ArrowBodySizeProperty, value);
			}
		}
		Stretch IGeometrySourceParameters.Stretch
		{
			get
			{
				return base.get_Stretch();
			}
		}
		Brush IGeometrySourceParameters.Stroke
		{
			get
			{
				return base.get_Stroke();
			}
		}
		double IGeometrySourceParameters.StrokeThickness
		{
			get
			{
				return base.get_StrokeThickness();
			}
		}
		protected override IGeometrySource CreateGeometrySource()
		{
			return new BlockArrowGeometrySource();
		}
	}
}
